package cn.cyh.queue_service.mapper;

import cn.cyh.queue_service.model.entity.Statistics;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;

/**
 * 统计数据Mapper接口
 */
@Mapper
public interface StatisticsMapper extends BaseMapper<Statistics> {
    
    /**
     * 获取日期范围内的所有统计数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计数据列表
     */
    @Select("SELECT * FROM biz_statistics WHERE stat_date BETWEEN #{startDate} AND #{endDate} ORDER BY stat_date DESC")
    List<Statistics> selectByDateRange(@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
    
    /**
     * 获取指定日期和业务类型的统计数据
     * 
     * @param statDate 统计日期
     * @param serviceTypeId 业务类型ID
     * @return 统计数据
     */
    @Select("SELECT * FROM biz_statistics WHERE stat_date = #{statDate} AND service_type_id = #{serviceTypeId} LIMIT 1")
    Statistics selectByDateAndServiceType(@Param("statDate") LocalDate statDate, @Param("serviceTypeId") Long serviceTypeId);
    
    /**
     * 获取日期范围内指定业务类型的统计数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param serviceTypeId 业务类型ID
     * @return 统计数据列表
     */
    @Select("SELECT * FROM biz_statistics WHERE stat_date BETWEEN #{startDate} AND #{endDate} AND service_type_id = #{serviceTypeId} ORDER BY stat_date DESC")
    List<Statistics> selectByDateRangeAndServiceType(@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, @Param("serviceTypeId") Long serviceTypeId);
} 